<template>
  <div class="article-container">
    <!-- 导航栏 -->
    <van-nav-bar
      fixed
      left-arrow
      @click-left="$router.push({ path: '/home' })"
      title="文章详情"
    ></van-nav-bar>
    <!-- /导航栏 -->

    <!-- 加载中 loading -->
    <van-loading v-if="loading" class="article-loading" />
    <!-- /加载中 loading -->

    <!-- 文章详情 -->
    <div class="detail">
      <h3 class="title">{{ article.title }}</h3>
      <div class="author">
        <van-image
          :src="article.aut_photo"
          round
          width="1rem"
          height="1rem"
          fit="fill"
        />
        <div class="text">
          <p class="name">{{ article.aut_name }}</p>
          <!-- 日期 -->
          <p class="time">{{ article.pubdate | fromNow }}</p>
        </div>
        <van-button round size="small" type="info" @click="toggleFollow">
          {{ article.is_followed === true ? '已关注' : '+ 关注' }}
        </van-button>
      </div>
      <div class="content">
        <div v-html="article.content">正文</div>
      </div>
      <van-divider>END</van-divider>
      <div class="zan">
        <van-button
          round
          size="small"
          hairline
          type="primary"
          plain
          icon="good-job-o"
          >点赞</van-button
        >
        &nbsp;&nbsp;&nbsp;&nbsp;
        <van-button
          round
          size="small"
          hairline
          type="danger"
          plain
          icon="delete"
          >不喜欢</van-button
        >
      </div>
    </div>
    <!-- /文章详情 -->
  </div>
</template>

<script>
// 导入接口
import { getArticle, followUser, unFollowUser } from '../../api/article'
// 导入token工具函数
import { getToken } from '../../utils/token'
// 导入工具函数
export default {
  // 不要和 html的标签名重名
  name: 'Article',
  data () {
    return {
      loading: true, // 控制加载中的 loading 状态
      article: {} // 文章详情
    }
  },
  // 方法
  methods: {
    async toggleFollow () {
      // token的非空判断
      if (getToken() === null) {
        // 没登录
        this.$toast.fail('请先登录')
        // 去登陆
        this.$router.push({ path: '/login', query: { back: this.$route.path } })
        // 阻断后续代码的执行
        return
      }
      // 判断关注状态
      if (this.article.is_followed === true) {
        // 取关 aut_id 作者的id
        await unFollowUser({ target: this.article.aut_id })
        this.$toast.success('取关成功!')
        this.article.is_followed = false
      } else {
        // 关注
        await followUser({ target: this.article.aut_id })
        this.$toast.success('关注成功!')
        this.article.is_followed = true
      }
    }
  },
  // 生命周期钩子
  async created () {
    // query √
    // params x
    const res = await getArticle({ id: this.$route.params.id })
    console.log('res:', res)
    this.article = res.data.data
    // 关闭加载状态
    this.loading = false
  }
}
</script>
<style lang="less">
.article-container {
  position: absolute;
  left: 0;
  top: 0;
  overflow-y: scroll;
  width: 100%;
  height: 100%;
  .article-loading {
    padding-top: 100px;
    text-align: center;
  }
  .van-nav-bar {
    background-color: #3296fa;
    .van-nav-bar__title {
      color: white;
    }
  }
  .error {
    padding-top: 100px;
    text-align: center;
  }
  .detail {
    padding: 50px 10px;
    .title {
      font-size: 16px;
    }
    .zan {
      text-align: center;
    }
    .author {
      padding: 10px 0;
      display: flex;
      .text {
        flex: 1;
        padding-left: 10px;
        line-height: 1.3;
        .name {
          font-size: 14px;
          margin: 0;
        }
        .time {
          margin: 0;
          font-size: 12px;
          color: #999;
        }
      }
    }
    .content {
      font-size: 14px;
      overflow: hidden;
      white-space: pre-wrap;
      word-break: break-all;
      ::v-deep img {
        max-width: 100%;
        background: #f9f9f9;
      }
    }
  }
}
</style>
